package pe.com.bbva.ge.vista.vaadin.ui;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import pe.com.bbva.ge.domain.configuracion.Posicion;
import pe.com.bbva.ge.domain.configuracion.Transportadora;
import pe.com.bbva.ge.domain.configuracion.Valor;
import pe.com.bbva.ge.domain.solicitud.Destino;
import pe.com.bbva.ge.domain.solicitud.DetalleDenominacion;
import pe.com.bbva.ge.domain.solicitud.DetalleMaterial;
import pe.com.bbva.ge.domain.solicitud.DetalleMoneda;
import pe.com.bbva.ge.domain.solicitud.DetalleOtroServicio;
import pe.com.bbva.ge.domain.solicitud.EstadoSolicitud;
import pe.com.bbva.ge.domain.solicitud.Solicitud;
import pe.com.bbva.ge.domain.solicitud.TipoSolicitud;
import pe.com.bbva.ge.negocio.ConfiguracionNegocio;
import pe.com.bbva.ge.negocio.SolicitudNegocio;
import pe.com.bbva.ge.utileria.Constante;
import pe.com.bbva.ge.utileria.UtileriaComun;
import pe.com.bbva.ge.vista.vaadin.ui.component.ComboBoxGE;
import pe.com.bbva.ge.vista.vaadin.ui.component.ComboBoxPosicion;
import pe.com.bbva.ge.vista.vaadin.ui.component.ComboBoxTipoSolicitud;
import pe.com.bbva.ge.vista.vaadin.ui.component.ComboBoxTransportadora;
import pe.com.bbva.ge.vista.vaadin.ui.component.ComboBoxValor;
import pe.com.bbva.ge.vista.vaadin.ui.component.TxtNumerico;
import pe.com.bbva.ge.vista.vaadin.ui.utileria.AlertDialog;
import pe.com.bbva.ge.vista.vaadin.ui.utileria.ComboValueChangeListener;
import pe.com.bbva.ge.vista.vaadin.ui.utileria.bean.MontoMonedas;
import pe.com.bbva.ge.vista.vaadin.ui.utileria.bean.PropiedadesTxtNumerico;

import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Item;
import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Panel;
import com.vaadin.ui.PopupDateField;
import com.vaadin.ui.Table;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

public class SolicitudUI extends VentanaUI implements ComboValueChangeListener {
	
	@AutoGenerated
	private VerticalLayout mainLayout;

	@AutoGenerated
	private HorizontalLayout lytBotonera;

	@AutoGenerated
	private HorizontalLayout lytSeparador5;

	@AutoGenerated
	private Button btnCerrar;

	@AutoGenerated
	private Button btnGuardar;

	@AutoGenerated
	private Button btnEnviar;

	@AutoGenerated
	private Button btnRechazar;

	@AutoGenerated
	private Button btnConfirmar;

	@AutoGenerated
	private Button btnRecepcionar;

	@AutoGenerated
	private HorizontalLayout lytSeparador4;

	@AutoGenerated
	private HorizontalLayout lytSeparador3;

	@AutoGenerated
	private AuditoriaUI ccAuditoria;

	@AutoGenerated
	private HorizontalLayout lytSeparador2;

	@AutoGenerated
	private VerticalLayout lytContenido;

	@AutoGenerated
	private HorizontalLayout lytSeparador1;

	@AutoGenerated
	private VerticalLayout lytCabecera;

	@AutoGenerated
	private Panel pnlDatos;

	@AutoGenerated
	private VerticalLayout lytDatos;

	@AutoGenerated
	private HorizontalLayout lytTransportadora;

	@AutoGenerated
	private TextField txtNroTransportadora;

	@AutoGenerated
	private ComboBoxTransportadora cmbTransportadora;

	@AutoGenerated
	private HorizontalLayout lytReferencia;

	@AutoGenerated
	private TextField txtReferencia;

	@AutoGenerated
	private GridLayout lytPrincipa;

	@AutoGenerated
	private CheckBox chkNoProgramado;

	@AutoGenerated
	private TextField txtEstado;

	@AutoGenerated
	private TxtNumerico txtCotizacion;

	@AutoGenerated
	private CheckBox chkPatronCalidad;

	@AutoGenerated
	private ComboBoxPosicion cmbDestino;

	@AutoGenerated
	private ComboBoxValor cmbTipoDestino;

	@AutoGenerated
	private PopupDateField pdfFechaAtencion;

	@AutoGenerated
	private ComboBoxPosicion cmbOrigen;

	@AutoGenerated
	private ComboBoxValor cmbTipoOrigen;

	@AutoGenerated
	private TextField txtFechaSolicitud;

	@AutoGenerated
	private TextField txtNroSolicitud;

	@AutoGenerated
	private ComboBoxTipoSolicitud cmbTipoSolicitud;

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	public ComboBoxTipoSolicitud getCmbTipoSolicitud() {
		return cmbTipoSolicitud;
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = 6939783506486373662L;

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	
	
	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	private Solicitud solicitud;
	private List<DetalleDenominacion> listaDetalleDenominaciones;
	private Table tblDetalleMateriales;
	private Table tblOtrosServicios;
	private Calendar calendario;
	private Calendar fechaAtencion;
	private BigDecimal diferenciaSolicitud;
	private List<MontoMonedas> listaMontoMonedas;
	private BandejaDeTrabajoUI bandejaDeTrabajoUI;
	private PropiedadesTxtNumerico propTxtNDecimales;
	private PropiedadesTxtNumerico propTxtNEnteros;

	@Autowired
	private ConfiguracionNegocio genericoNegocio;
	
	@Autowired
	private SolicitudNegocio gestionarSolicitudNegocio;
	
	/**
	 * The constructor should first build the main layout, set the
	 * composition root and then do any custom initialization.
	 *
	 * The constructor will not be automatically regenerated by the
	 * visual editor.
	 */
	public SolicitudUI(Solicitud solicitud, BandejaDeTrabajoUI bandejaDeTrabajoUI) {
		buildMainLayout();
		setCompositionRoot(mainLayout);
		this.solicitud = solicitud;
		this.bandejaDeTrabajoUI = bandejaDeTrabajoUI;
	}

	public Calendar getCalendario() {
		return calendario;
	}

	public void setCalendario(Calendar calendario) {
		this.calendario = calendario;
	}
	
	public Calendar getFechaAtencion() {
		return fechaAtencion;
	}

	public void setFechaAtencion(Calendar fechaAtencion) {
		this.fechaAtencion = fechaAtencion;
	}
	
	@Override
	public void postConstruccion(){
		this.propTxtNDecimales = new PropiedadesTxtNumerico();
		this.propTxtNDecimales.setEsDecimal(true);
		this.propTxtNEnteros = new PropiedadesTxtNumerico();
		this.propTxtNEnteros.setEsDecimal(false);
		
		setCalendario(Calendar.getInstance());
		getCalendario().setTime(new Date());
		
		setFechaAtencion(Calendar.getInstance());
		getFechaAtencion().setTime(getCalendario().getTime());
		getFechaAtencion().add(Calendar.DATE, 1);
		
		iniciarControles();
		procesarControles();
		
		cmbTipoSolicitud.setImmediate(true);
		cmbTipoSolicitud.addComboValueChangeListener(this);
		cmbTipoOrigen.setImmediate(true);
		cmbTipoOrigen.addComboValueChangeListener(this);
		cmbTipoDestino.setImmediate(true);
		cmbTipoDestino.addComboValueChangeListener(this);
		
		btnGuardar.addListener(new ClickListener() {
			@Override
			public void buttonClick(ClickEvent event) {
				guardarSolicitud();
			}
		});
		
		btnEnviar.addListener(new ClickListener() {
			@Override
			public void buttonClick(ClickEvent event) {
				confirmarAccion();				
			}
		});
		
		btnConfirmar.addListener(new ClickListener() {
			@Override
			public void buttonClick(ClickEvent event) {
				confirmarAccion();				
			}
		});
		
		btnRechazar.addListener(new ClickListener() {
			@Override
			public void buttonClick(ClickEvent event) {
				rechazarSolicitiud();				
			}
		});
		
		btnRecepcionar.addListener(new ClickListener() {
			@Override
			public void buttonClick(ClickEvent event) {
				confirmarAccion();				
			}
		});
		
		btnCerrar.addListener(new ClickListener() {
			@Override
			public void buttonClick(ClickEvent event) {
				cerrar();				
			}
		});
		
		// Validando fecha de atencion
		pdfFechaAtencion.addListener(new Property.ValueChangeListener() {
            private static final long serialVersionUID = 2067455464466500520L;
            
            public void valueChange(ValueChangeEvent event) {
            	Calendar fechaSeleccionada = Calendar.getInstance();
            	fechaSeleccionada.setTime((Date) event.getProperty().getValue());
            	long milis1 = fechaSeleccionada.getTimeInMillis();
            	long milis2 = getCalendario().getTimeInMillis();
            	long diff = milis1 - milis2;
            	long dias = diff / (24 * 60 * 60 * 1000);
            	
            	if(dias == 0)
            	{
            		chkNoProgramado.setValue(new Boolean(true));
            		AlertDialog alerta = new AlertDialog("Alerta", "Este es un pedido No Programado y  costará un [indicar el %} más", "Aceptar", "350");
            		getApplication().getMainWindow().getWindow().addWindow(alerta);
            	}
            	
            	if(dias > 0)
            	{
            		chkNoProgramado.setValue(new Boolean(false));
            	}
            	
            	if(dias < 0)
            	{
            		AlertDialog alerta = new AlertDialog("Alerta", "La fecha seleccionada no es valida", "Aceptar", "350");
            		getApplication().getMainWindow().getWindow().addWindow(alerta);
            		pdfFechaAtencion.setValue(getFechaAtencion().getTime());
            	}
            }
        });
		
		pdfFechaAtencion.setImmediate(true);
		
		chkNoProgramado.addListener(new ValueChangeListener() {
			private static final long serialVersionUID = -3557459528116040875L;
			@Override
			public void valueChange(ValueChangeEvent event) {
				Boolean esActivo = (Boolean) event.getProperty().getValue();
				
				if(!esActivo)
				{
					pdfFechaAtencion.setValue(getFechaAtencion().getTime());
				}
				else
				{
					pdfFechaAtencion.setValue(getCalendario().getTime());
				}
			}
		});
		
		chkNoProgramado.setImmediate(true);	
	}
	
	private void iniciarControles()
	{
		pdfFechaAtencion.setInputPrompt("Fecha de Atención");
		pdfFechaAtencion.setValue(getFechaAtencion().getTime());
		cmbTipoOrigen.setInputPrompt("Tipo Origen");
		cmbTipoDestino.setInputPrompt("Tipo Destino");
		cmbOrigen.setInputPrompt("Origen");
		cmbDestino.setInputPrompt("Destino");
		txtNroSolicitud.setInputPrompt("N° Solicitud");
		txtFechaSolicitud.setInputPrompt("Fecha de Solicitud");
		txtReferencia.setInputPrompt("Referencia");
		//txtTransportadora.setInputPrompt("Transportadora");
		txtNroTransportadora.setInputPrompt("N° Pedido Transportadora");
		txtCotizacion.setCaption("Cotización:");
		txtCotizacion.setPropiedadesTxtNumerico(this.propTxtNDecimales);
		txtEstado.setInputPrompt("Estado");
		txtCotizacion.setEnabled(false);
		
		// Limpiando los controles
		cmbTipoOrigen.setValue(null);
		cmbOrigen.setValue(null);
		pdfFechaAtencion.setValue(getFechaAtencion().getTime());
		cmbTipoDestino.setValue(null);
		cmbDestino.setValue(null);
		chkNoProgramado.setValue(new Boolean(false));
		chkPatronCalidad.setValue(new Boolean(false));
		txtCotizacion.setValue("0");
		txtReferencia.setValue("");
		cmbTransportadora.setValue(null);
		txtNroTransportadora.setValue("");
		
		this.listaDetalleDenominaciones = new ArrayList<DetalleDenominacion>();
		this.tblDetalleMateriales = new Table();
		this.tblOtrosServicios = new Table();
		this.diferenciaSolicitud = new BigDecimal(0);
		this.listaMontoMonedas = new ArrayList<MontoMonedas>();
	}

	private void procesarControles() {
		if(this.solicitud == null)//Nuevo
		{
			txtNroSolicitud.setEnabled(false);
			txtFechaSolicitud.setEnabled(false);
			txtFechaSolicitud.setEnabled(false);
			txtEstado.setEnabled(false);
			cmbTransportadora.setEnabled(false);
			txtNroTransportadora.setEnabled(false);
			btnRecepcionar.setEnabled(false);
			btnRechazar.setEnabled(false);
			btnConfirmar.setEnabled(false);
			btnEnviar.setEnabled(false);
			//ccAuditoria.setVisible(false);
		}
		else
		{
			txtNroSolicitud.setEnabled(false);
			txtFechaSolicitud.setEnabled(false);
			txtEstado.setEnabled(false);
			cmbTransportadora.setEnabled(true);
			txtNroTransportadora.setEnabled(true);
			btnRecepcionar.setEnabled(false);
			btnRechazar.setEnabled(false);
			btnEnviar.setEnabled(false);
			btnConfirmar.setEnabled(false);
			btnGuardar.setEnabled(false);
			//ccAuditoria.setVisible(false);
			
			cmbTipoSolicitud.setEnabled(false);
			cmbTipoSolicitud.setValue(this.solicitud.getTipo());
			txtNroSolicitud.setValue(this.solicitud.getNumero());
			txtFechaSolicitud.setValue(this.solicitud.getCreacion());
			cmbTipoOrigen.setValue(this.solicitud.getTipoOrigen());
			cmbOrigen.setValue(this.solicitud.getOrigen());
			pdfFechaAtencion.setValue(this.solicitud.getAtencion());
			if(this.solicitud.getCotizacion() != null)
			{
				txtCotizacion.setValue(this.solicitud.getCotizacion().toString());
			}
			txtReferencia.setValue(this.solicitud.getReferencia());
			txtEstado.setValue(this.solicitud.getEstado().getNombre());
			
			if(this.solicitud.getEstado().getCodigo().equals(Constante.ESTADO_SOLICITUD.POR_AUTORIZAR_SB) || 
					this.solicitud.getEstado().getCodigo().equals(Constante.ESTADO_SOLICITUD.POR_AUTORIZAR_GE))
			{
				btnConfirmar.setEnabled(true);
				btnRechazar.setEnabled(true);
			}
			
			if(this.solicitud.getEstado().getCodigo().equals(Constante.ESTADO_SOLICITUD.EN_PROCESO))
			{
				//btnConfirmar.setEnabled(true);
				//btnRechazar.setEnabled(true);
				btnRecepcionar.setEnabled(true);
			}
			
//			if(this.solicitud.getEstado().getCodigo().equals(Constante.ESTADO_SOLICITUD.POR_AUTORIZAR_GE))
//			{
//				btnRecepcionar.setEnabled(true);
//			}
			
			if(this.solicitud.getEstado().getCodigo().equals(Constante.ESTADO_SOLICITUD.REGISTRADO)) // REGISTRADO
			{
				btnGuardar.setEnabled(true);
				btnEnviar.setEnabled(true);
			}
			
			VentanaUI componente = null;
			
			if(this.solicitud.getTipo().getCodigo().equals(Constante.TIPO_SOLICITUD.PEDIDO_DE_EFECTIVO_DE_BOVEDA))
			{
				componente = new DenominacionesUI(this.solicitud, this.listaDetalleDenominaciones, this.diferenciaSolicitud, this.listaMontoMonedas);
			}
			
			if(this.solicitud.getTipo().getCodigo().equals(Constante.TIPO_SOLICITUD.PEDIDO_DE_MATERIALES))
			{
				componente = new MaterialesUI(this.solicitud, this.tblDetalleMateriales);
			}
			
			if(this.solicitud.getTipo().getCodigo().equals(Constante.TIPO_SOLICITUD.SERVICIO_A_CLIENTES_RECUENTO_REMESAS) ||
			   this.solicitud.getTipo().getCodigo().equals(Constante.TIPO_SOLICITUD.SERVICIO_DE_CLIENTES_SERVICIO_ESPECIAL))
			{
				componente = new OtrosServiciosUI(this.solicitud, this.tblOtrosServicios);
			}
			
			setContenido(componente);
		}
	}

	@Override
	public void comboValueChange(ComboBoxGE combo, ValueChangeEvent event) {
		if(combo.equals(cmbTipoSolicitud))
		{
			if(event.getProperty() != null && event.getProperty().getValue() != null)
			{
				VentanaUI componente;
				iniciarControles();
				
				TipoSolicitud tipoSolicitud = (TipoSolicitud) event.getProperty().getValue();
				if(tipoSolicitud.getCodigo().equals(Constante.TIPO_SOLICITUD.PEDIDO_DE_MATERIALES))
				{
					componente = new MaterialesUI(this.solicitud, this.tblDetalleMateriales);
				}
				else if(tipoSolicitud.getCodigo().equals(Constante.TIPO_SOLICITUD.SERVICIO_A_CLIENTES_RECUENTO_REMESAS) ||
						tipoSolicitud.getCodigo().equals(Constante.TIPO_SOLICITUD.SERVICIO_DE_CLIENTES_SERVICIO_ESPECIAL))
				{
					componente = new OtrosServiciosUI(this.solicitud, this.tblOtrosServicios);
				}
				else 
				{
					if(this.solicitud == null)
					{
						this.solicitud = new Solicitud();
						this.solicitud.setNumero(null);
						this.solicitud.setTipo(tipoSolicitud);
					}
					
					componente = new DenominacionesUI(this.solicitud, listaDetalleDenominaciones, this.diferenciaSolicitud, this.listaMontoMonedas);
				}
				
				txtCotizacion.setEnabled(tipoSolicitud.getCodigo().equals(Constante.TIPO_SOLICITUD.IMPORTACION_ME) || 
						tipoSolicitud.getCodigo().equals(Constante.TIPO_SOLICITUD.EXPORTACION_ME) ? true : false);

				setContenido(componente);
			}
		}
		
		/*if(combo.equals(cmbTipoOrigen))
		{
			if(event.getProperty() != null && event.getProperty().getValue() != null)
			{
				cmbOrigen.obtenerPosiciones(cmbTipoOrigen.obtenerValor());
			}
		}
		
		if(combo.equals(cmbTipoDestino))
		{
			if(event.getProperty() != null && event.getProperty().getValue() != null)
			{
				cmbDestino.obtenerPosiciones(cmbTipoDestino.obtenerValor());
			}
		}*/
	}
	
	protected void setContenido(CustomComponent component)
	{
		lytContenido.removeAllComponents();
		lytContenido.addComponent(component);
	}
	
	private void confirmarAccion()
	{
		Window wnd = new Window("Confirmación");
		wnd.setWidth("605");
		wnd.setHeight("265");
		wnd.setModal(true);
		ConfirmarAccionSolicitudUI confirmarAccionSolicitudUI = new ConfirmarAccionSolicitudUI(this.solicitud, getWindow(), this.bandejaDeTrabajoUI);
		wnd.addComponent(confirmarAccionSolicitudUI);
		getApplication().getMainWindow().getWindow().addWindow(wnd);
	}
	
	private void guardarSolicitud()
	{
		//Usuario creador = genericoNegocio.obtener(1l, Usuario.class);
		boolean esNuevo = this.solicitud.getNumero() == null ? true : false;
		TipoSolicitud tipoSolicitud = cmbTipoSolicitud.obtenerTipoSolicitud();
		Destino destino = new Destino();
		boolean seValidaronDatos = true;
		
		// Validando datos
		if(tipoSolicitud == null)
		{
			AlertDialog alerta = new AlertDialog("Alerta", "Debe seleccionar un tipo de solicitud", "Aceptar", "250");
    		getApplication().getMainWindow().getWindow().addWindow(alerta);
    		pdfFechaAtencion.setValue(getFechaAtencion().getTime());
    		cmbTipoSolicitud.focus();
    		return;
		}
		
		if(cmbTipoOrigen.obtenerValor() == null)
		{
			AlertDialog alerta = new AlertDialog("Alerta", "Debe seleccionar un tipo de origen", "Aceptar", "250");
    		getApplication().getMainWindow().getWindow().addWindow(alerta);
    		pdfFechaAtencion.setValue(getFechaAtencion().getTime());
    		cmbTipoOrigen.focus();
    		return;
		}
		
		if(cmbOrigen.obtenerPosicion() == null)
		{
			AlertDialog alerta = new AlertDialog("Alerta", "Debe seleccionar un origen", "Aceptar", "250");
    		getApplication().getMainWindow().getWindow().addWindow(alerta);
    		pdfFechaAtencion.setValue(getFechaAtencion().getTime());
    		cmbOrigen.focus();
    		return;
		}
		
		if(cmbTipoDestino.obtenerValor() == null)
		{
			AlertDialog alerta = new AlertDialog("Alerta", "Debe seleccionar un tipo de destino", "Aceptar", "250");
    		getApplication().getMainWindow().getWindow().addWindow(alerta);
    		pdfFechaAtencion.setValue(getFechaAtencion().getTime());
    		cmbTipoDestino.focus();
    		return;
		}
		
		if(cmbDestino.obtenerPosicion() == null)
		{
			AlertDialog alerta = new AlertDialog("Alerta", "Debe seleccionar un destino", "Aceptar", "250");
    		getApplication().getMainWindow().getWindow().addWindow(alerta);
    		pdfFechaAtencion.setValue(getFechaAtencion().getTime());
    		cmbDestino.focus();
    		return;
		}
		
		// Referencia
		Boolean noProgramado = (Boolean) chkNoProgramado.getValue();
		if(noProgramado && txtReferencia.getValue().toString().trim().length() == 0)
		{
			AlertDialog alerta = new AlertDialog("Alerta", "Debe ingresar una referencia", "Aceptar", "250");
    		getApplication().getMainWindow().getWindow().addWindow(alerta);
    		pdfFechaAtencion.setValue(getFechaAtencion().getTime());
    		seValidaronDatos = false;
		}
		
		// El monto de las monedas debe ser igual a la suma de los billetes y monedas de denominaciones
		for(MontoMonedas montoMoneda : this.listaMontoMonedas)
		{
			BigDecimal totalDenominaciones = new BigDecimal(0);
			
			if(montoMoneda.getMonto().compareTo(BigDecimal.ZERO) > 0)
			{
				for(DetalleDenominacion detalleDenominacion : this.listaDetalleDenominaciones)
				{
					if(detalleDenominacion.getDenominacion().getMoneda().getId() == montoMoneda.getMoneda().getId())
					{
						totalDenominaciones = totalDenominaciones.add(detalleDenominacion.getDenominacion().getValor().multiply( new BigDecimal( detalleDenominacion.getSolicitado() )));
					}
				}
			}
			
			if(montoMoneda.getMonto().compareTo(totalDenominaciones) == 1)
			{
				AlertDialog alerta = new AlertDialog("Alerta", "Error al registrar solicitud", "Aceptar", "250");
	    		getApplication().getMainWindow().getWindow().addWindow(alerta);
				seValidaronDatos = false;
				break;
			}
		}
		
		if(esNuevo)
		{	
			this.solicitud = new Solicitud();
			this.solicitud.setTipo(tipoSolicitud);
		}
		
		if(seValidaronDatos)
		{
			// Campos comunes
			this.solicitud.setAtencion((Date)pdfFechaAtencion.getValue());
			this.solicitud.setCotizacion(BigDecimal.valueOf(Double.valueOf(txtCotizacion.getValue().toString())));
			this.solicitud.setProgramado((Boolean) chkNoProgramado.getValue());
			this.solicitud.setReferencia(txtReferencia.getValue().toString());
			this.solicitud.setPatron((Boolean) chkPatronCalidad.getValue());
			this.solicitud.setPedido("");
			//this.solicitud.setTipo(cmbTipoSolicitud.obtenerTipoSolicitud());
			this.solicitud.setTipoOrigen(cmbTipoOrigen.obtenerValor());
			this.solicitud.setTransportadora(genericoNegocio.obtener(1L, Transportadora.class));
			
			// Campos de insercion
			if(esNuevo)
			{		
				long nrosolicitud = 1001 + gestionarSolicitudNegocio.contar(Solicitud.class);
				this.solicitud.setEstado(new EstadoSolicitud());
				this.solicitud.setNumero(String.valueOf(nrosolicitud));
				this.solicitud.setOrigen(cmbOrigen.obtenerPosicion());
				this.solicitud.setResponsable(UtileriaComun.obtenerUsuarioSesion());
				this.solicitud.setSolicitante(UtileriaComun.obtenerUsuarioSesion());
				gestionarSolicitudNegocio.crearSolicitud(this.solicitud);
				//txtNroSolicitud.setValue(this.solicitud.getNumero());
			}
			else
			{
				gestionarSolicitudNegocio.modificar(solicitud);
			}
			
			
			if(esNuevo) // Destino(s)
			{
				// FIXME: Se tiene que controlar para el caso de multiples destinos
				this.solicitud.setDestinos(new ArrayList<Destino>());
				Valor tipoDestino = new Valor();
				tipoDestino.setId(8L);
				destino.setTipo(tipoDestino);
				destino.setDestino(new Posicion());
				destino.getDestino().setId(1L);
				this.solicitud.addDestino(destino);
				
				gestionarSolicitudNegocio.crear(destino);
			}
			
			
			if(esNuevo && tipoSolicitud.getCodigo().equals(Constante.TIPO_SOLICITUD.PEDIDO_DE_MATERIALES)) // Materiales
			{
				List<DetalleMaterial> listaDetalleMaterial = new ArrayList<DetalleMaterial>();
				
				for (Object itemId : this.tblDetalleMateriales.getItemIds())
				{
					Item item = this.tblDetalleMateriales.getItem(itemId);
					ComboBoxValor cmbMaterial = (ComboBoxValor) item.getItemProperty("material").getValue();
					TxtNumerico txtCantidadSolicitado = (TxtNumerico) item.getItemProperty("cantidadSolicitado").getValue();
					TxtNumerico txtCantidadAprobado = (TxtNumerico) item.getItemProperty("cantidadAprobado").getValue();
					TxtNumerico txtCantidadRecepcionado = (TxtNumerico) item.getItemProperty("cantidadRecepcionado").getValue();
					
					DetalleMaterial detalleMaterial = new DetalleMaterial();
					detalleMaterial.setTipoMaterial(cmbMaterial.obtenerValor());
					//detalleMaterial.setSolicitado(Integer.valueOf(txtCantidadSolicitado.getValue().toString()));
					//detalleMaterial.setAprobado(Integer.valueOf(txtCantidadAprobado.getValue().toString()));
					//detalleMaterial.setRecepcionado(Integer.valueOf(txtCantidadRecepcionado.getValue().toString()));
					
					listaDetalleMaterial.add(detalleMaterial);
				}
				
				for(DetalleMaterial detalleMaterial : listaDetalleMaterial)
				{
					detalleMaterial.setDestino(destino);
					
					gestionarSolicitudNegocio.crear(detalleMaterial);
				}
			}
			
			if(esNuevo && (tipoSolicitud.getCodigo().equals(Constante.TIPO_SOLICITUD.SERVICIO_A_CLIENTES_RECUENTO_REMESAS) ||  
						   tipoSolicitud.getCodigo().equals(Constante.TIPO_SOLICITUD.SERVICIO_DE_CLIENTES_SERVICIO_ESPECIAL))) // Otros servicios
			{
				List<DetalleOtroServicio> listaOtrosServicios = new ArrayList<DetalleOtroServicio>();
				
				for (Object itemId : this.tblOtrosServicios.getItemIds())
				{
					Item item = this.tblOtrosServicios.getItem(itemId);
					ComboBoxValor cmbOtroServicio = (ComboBoxValor) item.getItemProperty("otrosServicios").getValue();
					TxtNumerico txtCantidadSolicitado = (TxtNumerico) item.getItemProperty("cantidad").getValue();
					
					DetalleOtroServicio detalleOtroServicio = new DetalleOtroServicio();
					detalleOtroServicio.setServicio(cmbOtroServicio.obtenerValor());
					//detalleOtroServicio.setCantidad(Integer.valueOf(txtCantidadSolicitado.getValue().toString()));
					
					listaOtrosServicios.add(detalleOtroServicio);
				}
				
				for(DetalleOtroServicio detalleOtroServicio : listaOtrosServicios)
				{
					detalleOtroServicio.setDestino(destino);
					
					gestionarSolicitudNegocio.crear(detalleOtroServicio);
				}
			}
			
			if(esNuevo && tipoSolicitud.getCodigo().equals(Constante.TIPO_SOLICITUD.PEDIDO_DE_EFECTIVO_DE_BOVEDA)) // Pedido de efectivo
			{			
				//---> Detalle Moneda
				List<Valor> monedas = genericoNegocio.obtenerValores("MONEDA");
				
				for(Valor moneda : monedas)
				{
					BigDecimal totalMontoBilletes = new BigDecimal(0);
					BigDecimal totalMontoMonedas = new BigDecimal(0);
					for(DetalleDenominacion detalleDenominacion : this.listaDetalleDenominaciones)
					{
						if(moneda.getCodigo().equals(detalleDenominacion.getDenominacion().getMoneda().getCodigo()) &&
							detalleDenominacion.getDenominacion().getTipo().getCodigo().equals("BILL"))
						{
							totalMontoBilletes = totalMontoBilletes.add(detalleDenominacion.getDenominacion().getValor().multiply( new BigDecimal( detalleDenominacion.getSolicitado())));
						}
						
						if(moneda.getCodigo().equals(detalleDenominacion.getDenominacion().getMoneda().getCodigo()) &&
								detalleDenominacion.getDenominacion().getTipo().getCodigo().equals("MON"))
						{
							totalMontoMonedas = totalMontoMonedas.add(detalleDenominacion.getDenominacion().getValor().multiply( new BigDecimal( detalleDenominacion.getSolicitado())));
						}
					}
					
					if(totalMontoBilletes.compareTo(BigDecimal.ZERO) > 0 || totalMontoMonedas.compareTo(BigDecimal.ZERO) > 0)
					{
						DetalleMoneda detalleMoneda = new DetalleMoneda();
						detalleMoneda.setDestino(destino);
						
						detalleMoneda.setMoneda(moneda);
						detalleMoneda.setTotalBillete(totalMontoBilletes);
						detalleMoneda.setTotalMoneda(totalMontoMonedas);
						detalleMoneda.setTotal(totalMontoBilletes.add(solicitud.getPatron() == true ? totalMontoMonedas.add(BigDecimal.valueOf(Constante.SOLICITUD.MONTO_PATRON_CALIDAD)) : totalMontoMonedas));
						
						gestionarSolicitudNegocio.crear(detalleMoneda);
					
						for(DetalleDenominacion detalleDenominacion : this.listaDetalleDenominaciones)
						{
							detalleDenominacion.setDetalleMoneda(detalleMoneda);
							
							gestionarSolicitudNegocio.crear(detalleDenominacion);
						}
					}
				}
			}
			
			this.bandejaDeTrabajoUI.buscarSolicitudes(null);
			getApplication().getMainWindow().getWindow().removeWindow(getWindow());
		}
	}
	
	private void enviarSolicitiud()
	{
		gestionarSolicitudNegocio.actualizarSolicitud(this.solicitud);
	}
	
	private void confirmarSolicitiud()
	{
		gestionarSolicitudNegocio.actualizarSolicitud(this.solicitud);
	}
	
	private void rechazarSolicitiud()
	{
		
	}
	
	private void recepcionarSolicitiud()
	{
		gestionarSolicitudNegocio.actualizarSolicitud(this.solicitud);
	}
	
	@AutoGenerated
	private VerticalLayout buildMainLayout() {
		// common part: create layout
		mainLayout = new VerticalLayout();
		mainLayout.setImmediate(false);
		mainLayout.setWidth("800px");
		mainLayout.setHeight("-1px");
		mainLayout.setMargin(false);
		
		// top-level component properties
		setWidth("800px");
		setHeight("-1px");
		
		// lytCabecera
		lytCabecera = buildLytCabecera();
		mainLayout.addComponent(lytCabecera);
		
		// lytSeparador1
		lytSeparador1 = new HorizontalLayout();
		lytSeparador1.setImmediate(false);
		lytSeparador1.setWidth("100.0%");
		lytSeparador1.setHeight("4px");
		lytSeparador1.setMargin(false);
		mainLayout.addComponent(lytSeparador1);
		
		// lytContenido
		lytContenido = new VerticalLayout();
		lytContenido.setImmediate(false);
		lytContenido.setWidth("100.0%");
		lytContenido.setHeight("-1px");
		lytContenido.setMargin(false);
		mainLayout.addComponent(lytContenido);
		
		// lytSeparador2
		lytSeparador2 = new HorizontalLayout();
		lytSeparador2.setImmediate(false);
		lytSeparador2.setWidth("100.0%");
		lytSeparador2.setHeight("4px");
		lytSeparador2.setMargin(false);
		mainLayout.addComponent(lytSeparador2);
		
		// ccAuditoria
		ccAuditoria = new AuditoriaUI();
		ccAuditoria.setImmediate(false);
		ccAuditoria.setWidth("100.0%");
		ccAuditoria.setHeight("-1px");
		mainLayout.addComponent(ccAuditoria);
		
		// lytSeparador3
		lytSeparador3 = new HorizontalLayout();
		lytSeparador3.setImmediate(false);
		lytSeparador3.setWidth("100.0%");
		lytSeparador3.setHeight("4px");
		lytSeparador3.setMargin(false);
		mainLayout.addComponent(lytSeparador3);
		
		// lytBotonera
		lytBotonera = buildLytBotonera();
		mainLayout.addComponent(lytBotonera);
		mainLayout.setComponentAlignment(lytBotonera, new Alignment(6));
		
		return mainLayout;
	}

	@AutoGenerated
	private VerticalLayout buildLytCabecera() {
		// common part: create layout
		lytCabecera = new VerticalLayout();
		lytCabecera.setImmediate(false);
		lytCabecera.setWidth("100.0%");
		lytCabecera.setHeight("-1px");
		lytCabecera.setMargin(false);
		
		// pnlDatos
		pnlDatos = buildPnlDatos();
		lytCabecera.addComponent(pnlDatos);
		
		return lytCabecera;
	}

	@AutoGenerated
	private Panel buildPnlDatos() {
		// common part: create layout
		pnlDatos = new Panel();
		pnlDatos.setCaption("Solicitud");
		pnlDatos.setImmediate(false);
		pnlDatos.setWidth("800px");
		pnlDatos.setHeight("-1px");
		
		// lytDatos
		lytDatos = buildLytDatos();
		pnlDatos.setContent(lytDatos);
		
		return pnlDatos;
	}

	@AutoGenerated
	private VerticalLayout buildLytDatos() {
		// common part: create layout
		lytDatos = new VerticalLayout();
		lytDatos.setImmediate(false);
		lytDatos.setWidth("100.0%");
		lytDatos.setHeight("-1px");
		lytDatos.setMargin(true);
		lytDatos.setSpacing(true);
		
		// lytPrincipa
		lytPrincipa = buildLytPrincipa();
		lytDatos.addComponent(lytPrincipa);
		
		// lytReferencia
		lytReferencia = buildLytReferencia();
		lytDatos.addComponent(lytReferencia);
		
		// lytTransportadora
		lytTransportadora = buildLytTransportadora();
		lytDatos.addComponent(lytTransportadora);
		
		return lytDatos;
	}

	@AutoGenerated
	private GridLayout buildLytPrincipa() {
		// common part: create layout
		lytPrincipa = new GridLayout();
		lytPrincipa.setImmediate(false);
		lytPrincipa.setWidth("100.0%");
		lytPrincipa.setHeight("-1px");
		lytPrincipa.setMargin(false);
		lytPrincipa.setSpacing(true);
		lytPrincipa.setColumns(3);
		lytPrincipa.setRows(4);
		
		// cmbTipoSolicitud
		cmbTipoSolicitud = new ComboBoxTipoSolicitud();
		cmbTipoSolicitud.setImmediate(false);
		cmbTipoSolicitud.setWidth("-1px");
		cmbTipoSolicitud.setHeight("-1px");
		lytPrincipa.addComponent(cmbTipoSolicitud, 0, 0);
		
		// txtNroSolicitud
		txtNroSolicitud = new TextField();
		txtNroSolicitud.setImmediate(false);
		txtNroSolicitud.setWidth("-1px");
		txtNroSolicitud.setHeight("-1px");
		lytPrincipa.addComponent(txtNroSolicitud, 1, 0);
		
		// txtFechaSolicitud
		txtFechaSolicitud = new TextField();
		txtFechaSolicitud.setImmediate(false);
		txtFechaSolicitud.setWidth("-1px");
		txtFechaSolicitud.setHeight("-1px");
		lytPrincipa.addComponent(txtFechaSolicitud, 2, 0);
		
		// cmbTipoOrigen
		cmbTipoOrigen = new ComboBoxValor("TIPO-ORIGEN");
		cmbTipoOrigen.setImmediate(false);
		cmbTipoOrigen.setWidth("-1px");
		cmbTipoOrigen.setHeight("-1px");
		lytPrincipa.addComponent(cmbTipoOrigen, 0, 1);
		
		// cmbOrigen
		cmbOrigen = new ComboBoxPosicion();
		cmbOrigen.setImmediate(false);
		cmbOrigen.setWidth("-1px");
		cmbOrigen.setHeight("-1px");
		lytPrincipa.addComponent(cmbOrigen, 1, 1);
		
		// pdfFechaAtencion
		pdfFechaAtencion = new PopupDateField();
		pdfFechaAtencion.setImmediate(false);
		pdfFechaAtencion.setWidth("-1px");
		pdfFechaAtencion.setHeight("-1px");
		pdfFechaAtencion.setInvalidAllowed(false);
		lytPrincipa.addComponent(pdfFechaAtencion, 2, 1);
		
		// cmbTipoDestino
		cmbTipoDestino = new ComboBoxValor("TIPO-DESTINO");
		cmbTipoDestino.setImmediate(false);
		cmbTipoDestino.setWidth("-1px");
		cmbTipoDestino.setHeight("24px");
		lytPrincipa.addComponent(cmbTipoDestino, 0, 2);
		
		// cmbDestino
		cmbDestino = new ComboBoxPosicion();
		cmbDestino.setImmediate(false);
		cmbDestino.setWidth("-1px");
		cmbDestino.setHeight("-1px");
		lytPrincipa.addComponent(cmbDestino, 1, 2);
		
		// chkPatronCalidad
		chkPatronCalidad = new CheckBox();
		chkPatronCalidad.setCaption("Patrón de calidad");
		chkPatronCalidad.setImmediate(false);
		chkPatronCalidad.setWidth("-1px");
		chkPatronCalidad.setHeight("-1px");
		lytPrincipa.addComponent(chkPatronCalidad, 2, 2);
		
		// txtCotizacion
		txtCotizacion = new TxtNumerico("", this.propTxtNDecimales);
		txtCotizacion.setImmediate(false);
		txtCotizacion.setWidth("-1px");
		txtCotizacion.setHeight("-1px");
		lytPrincipa.addComponent(txtCotizacion, 0, 3);
		
		// txtEstado
		txtEstado = new TextField();
		txtEstado.setImmediate(false);
		txtEstado.setWidth("-1px");
		txtEstado.setHeight("-1px");
		lytPrincipa.addComponent(txtEstado, 1, 3);
		
		// chkNoProgramado
		chkNoProgramado = new CheckBox();
		chkNoProgramado.setCaption("No Programado");
		chkNoProgramado.setImmediate(false);
		chkNoProgramado.setWidth("-1px");
		chkNoProgramado.setHeight("-1px");
		lytPrincipa.addComponent(chkNoProgramado, 2, 3);
		
		return lytPrincipa;
	}

	@AutoGenerated
	private HorizontalLayout buildLytReferencia() {
		// common part: create layout
		lytReferencia = new HorizontalLayout();
		lytReferencia.setImmediate(false);
		lytReferencia.setWidth("100.0%");
		lytReferencia.setHeight("-1px");
		lytReferencia.setMargin(false);
		
		// txtReferencia
		txtReferencia = new TextField();
		txtReferencia.setImmediate(false);
		txtReferencia.setWidth("70.0%");
		txtReferencia.setHeight("-1px");
		lytReferencia.addComponent(txtReferencia);
		
		return lytReferencia;
	}

	@AutoGenerated
	private HorizontalLayout buildLytTransportadora() {
		// common part: create layout
		lytTransportadora = new HorizontalLayout();
		lytTransportadora.setImmediate(false);
		lytTransportadora.setWidth("-1px");
		lytTransportadora.setHeight("-1px");
		lytTransportadora.setMargin(false);
		lytTransportadora.setSpacing(true);
		
		// txtTransportadora
		cmbTransportadora = new ComboBoxTransportadora();
		cmbTransportadora.setImmediate(false);
		cmbTransportadora.setWidth("135px");
		cmbTransportadora.setHeight("-1px");
		lytTransportadora.addComponent(cmbTransportadora);
		
		// txtNroTransportadora
		txtNroTransportadora = new TextField();
		txtNroTransportadora.setImmediate(false);
		txtNroTransportadora.setWidth("287px");
		txtNroTransportadora.setHeight("-1px");
		lytTransportadora.addComponent(txtNroTransportadora);
		
		return lytTransportadora;
	}

	@AutoGenerated
	private HorizontalLayout buildLytBotonera() {
		// common part: create layout
		lytBotonera = new HorizontalLayout();
		lytBotonera.setImmediate(false);
		lytBotonera.setWidth("100.0%");
		lytBotonera.setHeight("-1px");
		lytBotonera.setMargin(false);
		lytBotonera.setSpacing(true);
		
		// lytSeparador4
		lytSeparador4 = new HorizontalLayout();
		lytSeparador4.setImmediate(false);
		lytSeparador4.setWidth("163px");
		lytSeparador4.setHeight("-1px");
		lytSeparador4.setMargin(false);
		lytBotonera.addComponent(lytSeparador4);
		
		// btnRecepcionar
		btnRecepcionar = new Button();
		btnRecepcionar.setCaption("Recepcionar");
		btnRecepcionar.setImmediate(true);
		btnRecepcionar.setWidth("-1px");
		btnRecepcionar.setHeight("-1px");
		lytBotonera.addComponent(btnRecepcionar);
		lytBotonera.setComponentAlignment(btnRecepcionar, new Alignment(6));
		
		// btnConfirmar
		btnConfirmar = new Button();
		btnConfirmar.setCaption("Confirmar");
		btnConfirmar.setImmediate(true);
		btnConfirmar.setWidth("-1px");
		btnConfirmar.setHeight("-1px");
		lytBotonera.addComponent(btnConfirmar);
		lytBotonera.setComponentAlignment(btnConfirmar, new Alignment(6));
		
		// btnRechazar
		btnRechazar = new Button();
		btnRechazar.setCaption("Rechazar");
		btnRechazar.setImmediate(true);
		btnRechazar.setWidth("-1px");
		btnRechazar.setHeight("-1px");
		lytBotonera.addComponent(btnRechazar);
		lytBotonera.setComponentAlignment(btnRechazar, new Alignment(6));
		
		// btnEnviar
		btnEnviar = new Button();
		btnEnviar.setCaption("Enviar");
		btnEnviar.setImmediate(true);
		btnEnviar.setWidth("-1px");
		btnEnviar.setHeight("-1px");
		lytBotonera.addComponent(btnEnviar);
		lytBotonera.setComponentAlignment(btnEnviar, new Alignment(6));
		
		// btnGuardar
		btnGuardar = new Button();
		btnGuardar.setCaption("Guardar");
		btnGuardar.setImmediate(true);
		btnGuardar.setWidth("-1px");
		btnGuardar.setHeight("-1px");
		lytBotonera.addComponent(btnGuardar);
		lytBotonera.setComponentAlignment(btnGuardar, new Alignment(6));
		
		// btnCerrar
		btnCerrar = new Button();
		btnCerrar.setCaption("Cerrar");
		btnCerrar.setImmediate(true);
		btnCerrar.setWidth("-1px");
		btnCerrar.setHeight("-1px");
		lytBotonera.addComponent(btnCerrar);
		lytBotonera.setComponentAlignment(btnCerrar, new Alignment(6));
		
		// lytSeparador5
		lytSeparador5 = new HorizontalLayout();
		lytSeparador5.setImmediate(false);
		lytSeparador5.setWidth("21px");
		lytSeparador5.setHeight("-1px");
		lytSeparador5.setMargin(false);
		lytBotonera.addComponent(lytSeparador5);
		
		return lytBotonera;
	}	

}
